Skip to content

Xetrill/AppRes

Repository files navigation

Description

This utility helps with NVIDIA DSR (Dynamic Super Resolution). Changing the monitor resolution before starting a game — then changing it back afterwards — is annoying. AppRes automates that.

Usage

AppRes.exe [SWITCHES] WIDTH HEIGHT FREQENCY [WORKDIR] -- CMDLINE
  WIDTH      [0-n] The target width
  HEIGHT     [0-n] The target height
  FREQENCY   [0-n] The target frequency (refresh rate)
  CMDLINE    The target to launch.
             ShellExecute is used (supports "steam://rungameid/number")
             Quote/Escaping rules are CommandLineToArgvW
SWITCHES:
  -w|--workdir Specify the working directory for the target (CMDLINE)
  -m|--module  Specify the module (executable name) to watch.
               When such a named process exits the resolution is restored.
               You only need this when specifiy the target (CMDLINE) with an URL.

Note: If launched without arguments, a MessageBox with this usage information will be shown.

For example this is how I play Road to Vostok (Demo):

AppRes.exe -m=Road_to_Vostok_Demo.exe 5160 2160 175 -- steam://rungameid/2141300

My Technical Notes or Inspirations

It's been about 12 years since I last wrote any substantial C. Recently I listened to Casey Muratori and others who prefer C, which inspired me to try C again.

The bump allocator is a copy of MagicalBat’s implementation from a YouTube video.

Initial build approach and style were inspired by Mārtiņš Možeiko. I couldn't replicate his setup using VSCode. Debugging never worked with debug builds → build.bat debug. So I used Visual Studio instead.
But turns out, Visual Studio (2026) has a good onboarding flow for simple C projects now. So, that' cool.

Building

You'll need Visual Studio.

  • Simply run build.bat, this will build a release binary.
  • Or (recommended) use Visual Studio (read MSBuild).

I used Visual Studio 2026 and set the project to ISO C17 (2018) Standard (/std:c17). Although I think, I don't use a single feature from it.
In the same vein, Spectre Mitigation (CVE 2017-5753) are enabled for release mode. Just because really. Perhaps I'll poke around with Binary Ninja (Free version) later.
These two options may require VS2026 instead of 2022. Plus the Spectre Mitigations must be installed manually (Visual Studio Installer).

About

Utility to help with using NVIDIA DSR by changing and restoring display resolution.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors